// 蜂窝蜜造平台生成代码，如手工更改，请添加到 .beeignore 忽略生成

package com.fowo.api.model.report.receivable.detail;

import com.fowo.api.common.annotaion.DataObjectType;
import com.fowo.api.common.meta.MetaDataObject;
import com.fowo.api.common.meta.MetaDataObjects;
import com.fowo.api.common.model.PageSearch;
import com.fowo.api.common.mybatis.helper.PageSearchHelper;
import com.fowo.api.common.util.ListUtils;
import com.fowo.api.entity.ReportReceivableDetail;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;

@DataObjectType(ReportReceivableDetail.class)
@Setter
@Getter
public class ReportReceivableDetailSearchParamPo extends PageSearch {

  private static MetaDataObject metaDataObject;

  @Override
  public void applySqlSegments() {
    if (metaDataObject == null) {
      metaDataObject =
        ListUtils.find(
          MetaDataObjects.getObjects(),
          o -> "ReportReceivableDetail".equals(o.getName())
        );
    }
    PageSearchHelper.fillSqlSegments(this, metaDataObject);
  }

  @Override
  public void initFinal() {
    super.initFinal();
    applySqlSegments();
  }

  /**
   * 获取关联字段的查询表别名信息
   */
  @Override
  public Map<String, String> getJoinFieldTableAliasMap() {
    Map<String, String> map = new HashMap<>();
    map.put("parentReportReceivable", "rr");
    return map;
  }

  @Override
  public Map<String, OptionalJoinField> getOptionalJoinFields() {
    Map<String, OptionalJoinField> map = new HashMap<>();

    return map;
  }

  /**
   * 所属应收报告
   */
  private Long parentReportReceivable;

  /**
   * 所属应收报告 比较(eq)
   */
  private Long parentReportReceivableEq;
  /**
   * 所属应收报告 比较(neq)
   */
  private Long parentReportReceivableNeq;
  /**
   * 所属应收报告 比较(gt)
   */
  private Long parentReportReceivableGt;
  /**
   * 所属应收报告 比较(gte)
   */
  private Long parentReportReceivableGte;
  /**
   * 所属应收报告 比较(lt)
   */
  private Long parentReportReceivableLt;
  /**
   * 所属应收报告 比较(lte)
   */
  private Long parentReportReceivableLte;
  /**
   * 所属应收报告 比较(contains)
   */
  private Long parentReportReceivableContains;
  /**
   * 所属应收报告 比较(notcontains)
   */
  private Long parentReportReceivableNotcontains;
  /**
   * 所属应收报告 比较(startswith)
   */
  private Long parentReportReceivableStartswith;
  /**
   * 所属应收报告 比较(endswith)
   */
  private Long parentReportReceivableEndswith;
  /**
   * 所属应收报告 比较(isnull)
   */
  private Boolean parentReportReceivableIsnull;
  /**
   * 所属应收报告 比较(isnotnull)
   */
  private Boolean parentReportReceivableIsnotnull;
  /**
   * 所属应收报告的名称 比较(eq)
   */
  private String parentReportReceivableShopNameEq;
  /**
   * 所属应收报告的名称 比较(neq)
   */
  private String parentReportReceivableShopNameNeq;
  /**
   * 所属应收报告的名称 比较(gt)
   */
  private String parentReportReceivableShopNameGt;
  /**
   * 所属应收报告的名称 比较(gte)
   */
  private String parentReportReceivableShopNameGte;
  /**
   * 所属应收报告的名称 比较(lt)
   */
  private String parentReportReceivableShopNameLt;
  /**
   * 所属应收报告的名称 比较(lte)
   */
  private String parentReportReceivableShopNameLte;
  /**
   * 所属应收报告的名称 比较(contains)
   */
  private String parentReportReceivableShopNameContains;
  /**
   * 所属应收报告的名称 比较(notcontains)
   */
  private String parentReportReceivableShopNameNotcontains;
  /**
   * 所属应收报告的名称 比较(startswith)
   */
  private String parentReportReceivableShopNameStartswith;
  /**
   * 所属应收报告的名称 比较(endswith)
   */
  private String parentReportReceivableShopNameEndswith;
  /**
   * 所属应收报告的名称 比较(isnull)
   */
  private Boolean parentReportReceivableShopNameIsnull;
  /**
   * 所属应收报告的名称 比较(isnotnull)
   */
  private Boolean parentReportReceivableShopNameIsnotnull;

  /**
   * 所属应收报告(范围搜索)
   */
  private List<Long> parentReportReceivableInList;

  /**
   * 编号
   */
  private Long id;

  /**
   * 最小编号
   */
  private Long idMin;

  /**
   * 最大编号
   */
  private Long idMax;

  /**
   * 编号 比较(eq)
   */
  private Long idEq;
  /**
   * 编号 比较(neq)
   */
  private Long idNeq;
  /**
   * 编号 比较(gt)
   */
  private Long idGt;
  /**
   * 编号 比较(gte)
   */
  private Long idGte;
  /**
   * 编号 比较(lt)
   */
  private Long idLt;
  /**
   * 编号 比较(lte)
   */
  private Long idLte;
  /**
   * 编号 比较(contains)
   */
  private Long idContains;
  /**
   * 编号 比较(notcontains)
   */
  private Long idNotcontains;
  /**
   * 编号 比较(startswith)
   */
  private Long idStartswith;
  /**
   * 编号 比较(endswith)
   */
  private Long idEndswith;
  /**
   * 编号 比较(isnull)
   */
  private Boolean idIsnull;
  /**
   * 编号 比较(isnotnull)
   */
  private Boolean idIsnotnull;

  /**
   * 最早创建时间
   */
  @DateTimeFormat(pattern = "yyyy-MM-dd")
  private Date createTimeStart;

  /**
   * 最晚创建时间
   */
  @DateTimeFormat(pattern = "yyyy-MM-dd")
  private Date createTimeEnd;

  /**
   * 创建时间 比较(eq)
   */
  private Date createTimeEq;
  /**
   * 创建时间 比较(neq)
   */
  private Date createTimeNeq;
  /**
   * 创建时间 比较(gt)
   */
  private Date createTimeGt;
  /**
   * 创建时间 比较(gte)
   */
  private Date createTimeGte;
  /**
   * 创建时间 比较(lt)
   */
  private Date createTimeLt;
  /**
   * 创建时间 比较(lte)
   */
  private Date createTimeLte;
  /**
   * 创建时间 比较(contains)
   */
  private Date createTimeContains;
  /**
   * 创建时间 比较(notcontains)
   */
  private Date createTimeNotcontains;
  /**
   * 创建时间 比较(startswith)
   */
  private Date createTimeStartswith;
  /**
   * 创建时间 比较(endswith)
   */
  private Date createTimeEndswith;
  /**
   * 创建时间 比较(isnull)
   */
  private Boolean createTimeIsnull;
  /**
   * 创建时间 比较(isnotnull)
   */
  private Boolean createTimeIsnotnull;

  /**
   * 创建人
   */
  private Long createUser;

  /**
   * 最小创建人
   */
  private Long createUserMin;

  /**
   * 最大创建人
   */
  private Long createUserMax;

  /**
   * 创建人 比较(eq)
   */
  private Long createUserEq;
  /**
   * 创建人 比较(neq)
   */
  private Long createUserNeq;
  /**
   * 创建人 比较(gt)
   */
  private Long createUserGt;
  /**
   * 创建人 比较(gte)
   */
  private Long createUserGte;
  /**
   * 创建人 比较(lt)
   */
  private Long createUserLt;
  /**
   * 创建人 比较(lte)
   */
  private Long createUserLte;
  /**
   * 创建人 比较(contains)
   */
  private Long createUserContains;
  /**
   * 创建人 比较(notcontains)
   */
  private Long createUserNotcontains;
  /**
   * 创建人 比较(startswith)
   */
  private Long createUserStartswith;
  /**
   * 创建人 比较(endswith)
   */
  private Long createUserEndswith;
  /**
   * 创建人 比较(isnull)
   */
  private Boolean createUserIsnull;
  /**
   * 创建人 比较(isnotnull)
   */
  private Boolean createUserIsnotnull;

  /**
   * 最早更新时间
   */
  @DateTimeFormat(pattern = "yyyy-MM-dd")
  private Date lastUpdateTimeStart;

  /**
   * 最晚更新时间
   */
  @DateTimeFormat(pattern = "yyyy-MM-dd")
  private Date lastUpdateTimeEnd;

  /**
   * 更新时间 比较(eq)
   */
  private Date lastUpdateTimeEq;
  /**
   * 更新时间 比较(neq)
   */
  private Date lastUpdateTimeNeq;
  /**
   * 更新时间 比较(gt)
   */
  private Date lastUpdateTimeGt;
  /**
   * 更新时间 比较(gte)
   */
  private Date lastUpdateTimeGte;
  /**
   * 更新时间 比较(lt)
   */
  private Date lastUpdateTimeLt;
  /**
   * 更新时间 比较(lte)
   */
  private Date lastUpdateTimeLte;
  /**
   * 更新时间 比较(contains)
   */
  private Date lastUpdateTimeContains;
  /**
   * 更新时间 比较(notcontains)
   */
  private Date lastUpdateTimeNotcontains;
  /**
   * 更新时间 比较(startswith)
   */
  private Date lastUpdateTimeStartswith;
  /**
   * 更新时间 比较(endswith)
   */
  private Date lastUpdateTimeEndswith;
  /**
   * 更新时间 比较(isnull)
   */
  private Boolean lastUpdateTimeIsnull;
  /**
   * 更新时间 比较(isnotnull)
   */
  private Boolean lastUpdateTimeIsnotnull;

  /**
   * 更新人
   */
  private Long lastUpdateUser;

  /**
   * 最小更新人
   */
  private Long lastUpdateUserMin;

  /**
   * 最大更新人
   */
  private Long lastUpdateUserMax;

  /**
   * 更新人 比较(eq)
   */
  private Long lastUpdateUserEq;
  /**
   * 更新人 比较(neq)
   */
  private Long lastUpdateUserNeq;
  /**
   * 更新人 比较(gt)
   */
  private Long lastUpdateUserGt;
  /**
   * 更新人 比较(gte)
   */
  private Long lastUpdateUserGte;
  /**
   * 更新人 比较(lt)
   */
  private Long lastUpdateUserLt;
  /**
   * 更新人 比较(lte)
   */
  private Long lastUpdateUserLte;
  /**
   * 更新人 比较(contains)
   */
  private Long lastUpdateUserContains;
  /**
   * 更新人 比较(notcontains)
   */
  private Long lastUpdateUserNotcontains;
  /**
   * 更新人 比较(startswith)
   */
  private Long lastUpdateUserStartswith;
  /**
   * 更新人 比较(endswith)
   */
  private Long lastUpdateUserEndswith;
  /**
   * 更新人 比较(isnull)
   */
  private Boolean lastUpdateUserIsnull;
  /**
   * 更新人 比较(isnotnull)
   */
  private Boolean lastUpdateUserIsnotnull;

  /**
   * 最早单据时间
   */
  @DateTimeFormat(pattern = "yyyy-MM-dd")
  private Date postedDateLocaleStart;

  /**
   * 最晚单据时间
   */
  @DateTimeFormat(pattern = "yyyy-MM-dd")
  private Date postedDateLocaleEnd;

  /**
   * 单据时间 比较(eq)
   */
  private Date postedDateLocaleEq;
  /**
   * 单据时间 比较(neq)
   */
  private Date postedDateLocaleNeq;
  /**
   * 单据时间 比较(gt)
   */
  private Date postedDateLocaleGt;
  /**
   * 单据时间 比较(gte)
   */
  private Date postedDateLocaleGte;
  /**
   * 单据时间 比较(lt)
   */
  private Date postedDateLocaleLt;
  /**
   * 单据时间 比较(lte)
   */
  private Date postedDateLocaleLte;
  /**
   * 单据时间 比较(contains)
   */
  private Date postedDateLocaleContains;
  /**
   * 单据时间 比较(notcontains)
   */
  private Date postedDateLocaleNotcontains;
  /**
   * 单据时间 比较(startswith)
   */
  private Date postedDateLocaleStartswith;
  /**
   * 单据时间 比较(endswith)
   */
  private Date postedDateLocaleEndswith;
  /**
   * 单据时间 比较(isnull)
   */
  private Boolean postedDateLocaleIsnull;
  /**
   * 单据时间 比较(isnotnull)
   */
  private Boolean postedDateLocaleIsnotnull;

  /**
   * 结算编号(模糊搜索)
   */
  private String fid;

  /**
   * 结算编号 比较(eq)
   */
  private String fidEq;
  /**
   * 结算编号 比较(neq)
   */
  private String fidNeq;
  /**
   * 结算编号 比较(gt)
   */
  private String fidGt;
  /**
   * 结算编号 比较(gte)
   */
  private String fidGte;
  /**
   * 结算编号 比较(lt)
   */
  private String fidLt;
  /**
   * 结算编号 比较(lte)
   */
  private String fidLte;
  /**
   * 结算编号 比较(contains)
   */
  private String fidContains;
  /**
   * 结算编号 比较(notcontains)
   */
  private String fidNotcontains;
  /**
   * 结算编号 比较(startswith)
   */
  private String fidStartswith;
  /**
   * 结算编号 比较(endswith)
   */
  private String fidEndswith;
  /**
   * 结算编号 比较(isnull)
   */
  private Boolean fidIsnull;
  /**
   * 结算编号 比较(isnotnull)
   */
  private Boolean fidIsnotnull;

  /**
   * 结算编号(精确搜索)
   */
  private List<String> fidInList;

  /**
   * MSKU(模糊搜索)
   */
  private String sellerSku;

  /**
   * MSKU 比较(eq)
   */
  private String sellerSkuEq;
  /**
   * MSKU 比较(neq)
   */
  private String sellerSkuNeq;
  /**
   * MSKU 比较(gt)
   */
  private String sellerSkuGt;
  /**
   * MSKU 比较(gte)
   */
  private String sellerSkuGte;
  /**
   * MSKU 比较(lt)
   */
  private String sellerSkuLt;
  /**
   * MSKU 比较(lte)
   */
  private String sellerSkuLte;
  /**
   * MSKU 比较(contains)
   */
  private String sellerSkuContains;
  /**
   * MSKU 比较(notcontains)
   */
  private String sellerSkuNotcontains;
  /**
   * MSKU 比较(startswith)
   */
  private String sellerSkuStartswith;
  /**
   * MSKU 比较(endswith)
   */
  private String sellerSkuEndswith;
  /**
   * MSKU 比较(isnull)
   */
  private Boolean sellerSkuIsnull;
  /**
   * MSKU 比较(isnotnull)
   */
  private Boolean sellerSkuIsnotnull;

  /**
   * MSKU(精确搜索)
   */
  private List<String> sellerSkuInList;

  /**
   * SKU(模糊搜索)
   */
  private String localSku;

  /**
   * SKU 比较(eq)
   */
  private String localSkuEq;
  /**
   * SKU 比较(neq)
   */
  private String localSkuNeq;
  /**
   * SKU 比较(gt)
   */
  private String localSkuGt;
  /**
   * SKU 比较(gte)
   */
  private String localSkuGte;
  /**
   * SKU 比较(lt)
   */
  private String localSkuLt;
  /**
   * SKU 比较(lte)
   */
  private String localSkuLte;
  /**
   * SKU 比较(contains)
   */
  private String localSkuContains;
  /**
   * SKU 比较(notcontains)
   */
  private String localSkuNotcontains;
  /**
   * SKU 比较(startswith)
   */
  private String localSkuStartswith;
  /**
   * SKU 比较(endswith)
   */
  private String localSkuEndswith;
  /**
   * SKU 比较(isnull)
   */
  private Boolean localSkuIsnull;
  /**
   * SKU 比较(isnotnull)
   */
  private Boolean localSkuIsnotnull;

  /**
   * SKU(精确搜索)
   */
  private List<String> localSkuInList;

  /**
   * 品名(模糊搜索)
   */
  private String localName;

  /**
   * 品名 比较(eq)
   */
  private String localNameEq;
  /**
   * 品名 比较(neq)
   */
  private String localNameNeq;
  /**
   * 品名 比较(gt)
   */
  private String localNameGt;
  /**
   * 品名 比较(gte)
   */
  private String localNameGte;
  /**
   * 品名 比较(lt)
   */
  private String localNameLt;
  /**
   * 品名 比较(lte)
   */
  private String localNameLte;
  /**
   * 品名 比较(contains)
   */
  private String localNameContains;
  /**
   * 品名 比较(notcontains)
   */
  private String localNameNotcontains;
  /**
   * 品名 比较(startswith)
   */
  private String localNameStartswith;
  /**
   * 品名 比较(endswith)
   */
  private String localNameEndswith;
  /**
   * 品名 比较(isnull)
   */
  private Boolean localNameIsnull;
  /**
   * 品名 比较(isnotnull)
   */
  private Boolean localNameIsnotnull;

  /**
   * 品名(精确搜索)
   */
  private List<String> localNameInList;

  /**
   * 摘要(模糊搜索)
   */
  private String abstractName;

  /**
   * 摘要 比较(eq)
   */
  private String abstractNameEq;
  /**
   * 摘要 比较(neq)
   */
  private String abstractNameNeq;
  /**
   * 摘要 比较(gt)
   */
  private String abstractNameGt;
  /**
   * 摘要 比较(gte)
   */
  private String abstractNameGte;
  /**
   * 摘要 比较(lt)
   */
  private String abstractNameLt;
  /**
   * 摘要 比较(lte)
   */
  private String abstractNameLte;
  /**
   * 摘要 比较(contains)
   */
  private String abstractNameContains;
  /**
   * 摘要 比较(notcontains)
   */
  private String abstractNameNotcontains;
  /**
   * 摘要 比较(startswith)
   */
  private String abstractNameStartswith;
  /**
   * 摘要 比较(endswith)
   */
  private String abstractNameEndswith;
  /**
   * 摘要 比较(isnull)
   */
  private Boolean abstractNameIsnull;
  /**
   * 摘要 比较(isnotnull)
   */
  private Boolean abstractNameIsnotnull;

  /**
   * 摘要(精确搜索)
   */
  private List<String> abstractNameInList;

  /**
   * 本期增加
   */
  private java.math.BigDecimal increase;

  /**
   * 最小本期增加
   */
  private java.math.BigDecimal increaseMin;

  /**
   * 最大本期增加
   */
  private java.math.BigDecimal increaseMax;

  /**
   * 本期增加 比较(eq)
   */
  private java.math.BigDecimal increaseEq;
  /**
   * 本期增加 比较(neq)
   */
  private java.math.BigDecimal increaseNeq;
  /**
   * 本期增加 比较(gt)
   */
  private java.math.BigDecimal increaseGt;
  /**
   * 本期增加 比较(gte)
   */
  private java.math.BigDecimal increaseGte;
  /**
   * 本期增加 比较(lt)
   */
  private java.math.BigDecimal increaseLt;
  /**
   * 本期增加 比较(lte)
   */
  private java.math.BigDecimal increaseLte;
  /**
   * 本期增加 比较(contains)
   */
  private java.math.BigDecimal increaseContains;
  /**
   * 本期增加 比较(notcontains)
   */
  private java.math.BigDecimal increaseNotcontains;
  /**
   * 本期增加 比较(startswith)
   */
  private java.math.BigDecimal increaseStartswith;
  /**
   * 本期增加 比较(endswith)
   */
  private java.math.BigDecimal increaseEndswith;
  /**
   * 本期增加 比较(isnull)
   */
  private Boolean increaseIsnull;
  /**
   * 本期增加 比较(isnotnull)
   */
  private Boolean increaseIsnotnull;

  /**
   * 本期减少
   */
  private java.math.BigDecimal decrease;

  /**
   * 最小本期减少
   */
  private java.math.BigDecimal decreaseMin;

  /**
   * 最大本期减少
   */
  private java.math.BigDecimal decreaseMax;

  /**
   * 本期减少 比较(eq)
   */
  private java.math.BigDecimal decreaseEq;
  /**
   * 本期减少 比较(neq)
   */
  private java.math.BigDecimal decreaseNeq;
  /**
   * 本期减少 比较(gt)
   */
  private java.math.BigDecimal decreaseGt;
  /**
   * 本期减少 比较(gte)
   */
  private java.math.BigDecimal decreaseGte;
  /**
   * 本期减少 比较(lt)
   */
  private java.math.BigDecimal decreaseLt;
  /**
   * 本期减少 比较(lte)
   */
  private java.math.BigDecimal decreaseLte;
  /**
   * 本期减少 比较(contains)
   */
  private java.math.BigDecimal decreaseContains;
  /**
   * 本期减少 比较(notcontains)
   */
  private java.math.BigDecimal decreaseNotcontains;
  /**
   * 本期减少 比较(startswith)
   */
  private java.math.BigDecimal decreaseStartswith;
  /**
   * 本期减少 比较(endswith)
   */
  private java.math.BigDecimal decreaseEndswith;
  /**
   * 本期减少 比较(isnull)
   */
  private Boolean decreaseIsnull;
  /**
   * 本期减少 比较(isnotnull)
   */
  private Boolean decreaseIsnotnull;

  /**
   * 余额
   */
  private java.math.BigDecimal balance;

  /**
   * 最小余额
   */
  private java.math.BigDecimal balanceMin;

  /**
   * 最大余额
   */
  private java.math.BigDecimal balanceMax;

  /**
   * 余额 比较(eq)
   */
  private java.math.BigDecimal balanceEq;
  /**
   * 余额 比较(neq)
   */
  private java.math.BigDecimal balanceNeq;
  /**
   * 余额 比较(gt)
   */
  private java.math.BigDecimal balanceGt;
  /**
   * 余额 比较(gte)
   */
  private java.math.BigDecimal balanceGte;
  /**
   * 余额 比较(lt)
   */
  private java.math.BigDecimal balanceLt;
  /**
   * 余额 比较(lte)
   */
  private java.math.BigDecimal balanceLte;
  /**
   * 余额 比较(contains)
   */
  private java.math.BigDecimal balanceContains;
  /**
   * 余额 比较(notcontains)
   */
  private java.math.BigDecimal balanceNotcontains;
  /**
   * 余额 比较(startswith)
   */
  private java.math.BigDecimal balanceStartswith;
  /**
   * 余额 比较(endswith)
   */
  private java.math.BigDecimal balanceEndswith;
  /**
   * 余额 比较(isnull)
   */
  private Boolean balanceIsnull;
  /**
   * 余额 比较(isnotnull)
   */
  private Boolean balanceIsnotnull;

  /**
   * settlement_id(模糊搜索)
   */
  private String settlementId;

  /**
   * settlement_id 比较(eq)
   */
  private String settlementIdEq;
  /**
   * settlement_id 比较(neq)
   */
  private String settlementIdNeq;
  /**
   * settlement_id 比较(gt)
   */
  private String settlementIdGt;
  /**
   * settlement_id 比较(gte)
   */
  private String settlementIdGte;
  /**
   * settlement_id 比较(lt)
   */
  private String settlementIdLt;
  /**
   * settlement_id 比较(lte)
   */
  private String settlementIdLte;
  /**
   * settlement_id 比较(contains)
   */
  private String settlementIdContains;
  /**
   * settlement_id 比较(notcontains)
   */
  private String settlementIdNotcontains;
  /**
   * settlement_id 比较(startswith)
   */
  private String settlementIdStartswith;
  /**
   * settlement_id 比较(endswith)
   */
  private String settlementIdEndswith;
  /**
   * settlement_id 比较(isnull)
   */
  private Boolean settlementIdIsnull;
  /**
   * settlement_id 比较(isnotnull)
   */
  private Boolean settlementIdIsnotnull;

  /**
   * settlement_id(精确搜索)
   */
  private List<String> settlementIdInList;

  /**
   * 表单名称
   */
  private String formName;

  /**
   * 工作流状态
   */
  private Integer wfStatus;
}
